' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2024.09.09.00.00]) on 2025.02.13 at 23:05 (Coordinated Universal Time)
' This program by Charlie Veniot
' based on the MSX program by VampierMSX (https://www.youtube.com/watch?v=Lyj5NmVQDWQ)
' 🟠🟠🟠 Declarations
CONST botCount% = 150
DIM posture$( 1 TO botCount% ), _
xpos%( 1 TO botCount% ), _
ypos%( 1 TO botCount% ), _
c%( 1 TO botCount% )
DIM beat% = 1
' 🟠🟠🟠 Main program
SCREEN _NEWIMAGE( 240, 160, 13 )
_INITAUDIO
_SNDWAVE "SQUARE"
GOSUB 🔷CreateBotPostures
GOSUB 🔷InitBots
_DISPLAY
➔LoopStart:
GOSUB 🔷PrintBots
SLEEP 1
GOSUB 🔷ShiftPostures
GOTO ➔LoopStart
END
' 🟠🟠🟠 GOSUB Routines
🔷CreateBotPostures:
LETCHR$( 0, "...XX..." _
+ "...XX..." _
+ ".X......" _
+ ".XXXXXX." _
+ "...XX.X." _
+ "...XX.X." _
+ ".XXXXX.." _
+ "XX..XX.." )
LETCHR$( 1, "...XX..." _
+ "...XX..." _
+ "......X." _
+ ".XXXXXX." _
+ ".X.XX..." _
+ ".X.XX..." _
+ "..XXXXX." _
+ "..XX..XX" )
RETURN
🔷InitBots:
FOR i = 1 TO botCount%
posture$(i) = CHR$( INT( RND * 2 ) )
xpos%(i) = INT( RND * ( _WIDTH / 8 ) ) + 1
ypos%(i) = INT( RND * ( ( _HEIGHT - 16 ) / 8 ) ) + 2
c%(i) = INT( RND * 64 ) + 1
NEXT i
RETURN
🔷PrintBots:
FOR i = 1 TO botCount%
COLOR c%(i)
LOCATE ypos%(i), xpos%(i)
PRINT posture$(i);
NEXT i
_DISPLAY
RETURN
🔷ShiftPostures:
FOR i = 1 TO botCount%
IF INT(RND*2) = 1 THEN posture$(i) = IFF( posture$(i) = CHR$(0), CHR$(1), CHR$(0) )
NEXT i
IF beat% = 1 THEN GOSUB 🪘BeatOne ELSE IF beat% = 3 THEN GOSUB 🪘BeatThree ELSE GOSUB 🪘BeatOther
beat% = beat% + 1 : IF beat% > 4 THEN beat% = 1
RETURN
🪘BeatOne:
SOUND 32.703, 2
SOUND 1, 5
SOUND 32.703, 2
RETURN
🪘BeatThree:
SOUND 73.416, 2
RETURN
🪘BeatOther:
SOUND 48.999, 2
RETURN